Καλώς ορίσατε στο dotNETZone.gr - Σύνδεση | Εγγραφή | Βοήθεια
σε

 

Αρχική σελίδα Ιστολόγια Συζητήσεις Εκθέσεις Φωτογραφιών Αρχειοθήκες

Δικαιώματα χρηστη σε εγγραφές ενος table

Îåêßíçóå áðü ôï ìÝëïò Karist. Τελευταία δημοσίευση από το μέλος Karist στις 18-07-2011, 11:54. Υπάρχουν 2 απαντήσεις.
Ταξινόμηση Δημοσιεύσεων: Προηγούμενο Επόμενο
  •  18-07-2011, 11:05 66586

    Δικαιώματα χρηστη σε εγγραφές ενος table

    Γεια σας,

    σε ένα table ( πχ orders ) μιας βασης δεδομένων, θα υπάρχουν δεδομένα για διαφορετικούς χρηστες.

    Υπάρχει η δυνατότητα με τη χρηση ξεχωριστών κωδικών πρόσβασης, ο κάθε χρήστης να έχει πρόσβαση ΜΟΝΟ στα δικά του στοιχεία;

    Αυτο που θέλω να κάνω, ειναι να δωσω την δυνατότητα πρόσβασης σε μια βαση sql στο table orders, σε εξωτερικούς συνεργατες, αλλά φυσικά να μη μπορεί ο ένας συνεργάτης να έχει πρόσβαση στα δεδομένα καποιου άλλου.

    Μπορώ να το πετυχω αυτό με την χρηση user name & password σε επίπεδο sql ή πρέπει να κάνω ξεχωριστά table για καθε εξωτερικό συνεργάτη, που μαλλον δεν είναι το σωστότερο;

    Καμμιά ιδέα-πρόταση;

    Ευχαριστώ εκ των προτέρων για την παντα πολυτιμη βοήθειά σας.

  •  18-07-2011, 11:34 66587 σε απάντηση της 66586

    Απ: Δικαιώματα χρηστη σε εγγραφές ενος table

    Ο τρόπος με τον οποίο γίνεται αυτό εξαποανέκαθεν είναι δημιουργώντας ξεχωριστά views ανά χρήστη ή κατηγορία χρηστών και δίνοντας δικαιώματα στα views αυτά. Η δημιουργία ενός view ανά χρήστη δεν είναι και ό,τι καλύτερο πάντως καθώς θα πρέπει να δημιουργήσεις πολλά views.

    Μία άλλη λύση είναι να προσθέσεις ένα πεδίο με το username του χρήστη που έχει δικαίωμα και μετά να δημιουργήσεις ένα view το οποίο φιλτράρει τα αποτελέσματα με βάση το username του χρήστη και δίνοντας πρόσβαση στους εξωτερικούς χρήστες σε αυτό το view και μόνο (π.χ. χρησιμοποιώντας τις CURRENT_USER() ή SYSTEM_USER()).

    Όπως και να έχει πάντως, δεν είναι και τόσο καλή λύση να δώσεις πρόσβαση στη βάση με ξεχωριστά login σε κάθε πελάτη. Καταρχήν, θα πρέπει να βεβαιωθείς ότι έχεις δώσει σωστά permissions σε όλους τους χρήστες, σε όλους τους πίνακες. Μετά, θα πρέπει να διαχειρίζεσαι τα logins είτε σε επίπεδο windows accounts είτε ως SQL Logins. Τέλος, θα πρέπει να "βγάλεις" τον SQL Server προς τα έξω για να μπορούν να τον δουν οι άλλοι χρήστες.

    Αντί γι αυτό, είναι πολύ προτιμότερο και ευκολότερο να τροποποιήσεις την εφαρμογή σου έτσι ώστε να αναγνωρίζει διαφορετικούς χρήστες και να φιλτράρει τα δεδομένα που δείχνει με βάση το χρήστη. Το ASP.NET σου δίνει "από το κουτί" τη δυνατότητα να υποστηρίξεις πολλαπλούς χρήστες μέσω του ASP.NET Membership. Μετά, θα μπορείς να δείξεις διαφορετικές οθόνες ή να κάνεις διαφορετικά queries ανάλογα με το χρήστη που έχει κάνει login.

    Σε κάθε περίπτωση θα πρέπει η εφαρμογή ή/και η βάση σου να έχουν σχεδιαστεί έχοντας υπόψη την ύπαρξη πολλών χρηστών. Διαφορετικά, θα χρειαστούν αρκετές αλλαγές στη βάση (ειδικά αν θέλεις να έχεις ξεχωριστά views ανά συνεργάτη) και στην εφαρμογή.


    Παναγιώτης Καναβός, Freelancer
    Twitter: http://www.twitter.com/pkanavos
  •  18-07-2011, 11:54 66588 σε απάντηση της 66587

    Απ: Δικαιώματα χρηστη σε εγγραφές ενος table

    Παναγιώτη ευχαριστώ πολύ για την  άμεση απάντηση σου,

    τη βαση του sql θα την "χτυπανε" οι εξ. συνεργατες με δικά τους appl, οποτε θα πρέπει να  "βγαλω" τον sql στο internet. Δεν θα χρησιμοποιει κανεις από τους εξ. συνεργατες δικο μου apll. Το μονο appl θα τρεχει από εμενα για την ενημέρωση της βασης με στοιχεία.

    Για την χρήση του view και  του SYSTEM_USER ειχα διαβάσει, αλλά δεν ημουν σιγουρος οτι ηταν η καλυτερη  ή η μοναδική λύση.

    Θα υπάρχει ένα view με συγκεκριμένα πεδία για ολους και ο έλεγχος θα γινεται με "WHERE user_name = SYSTEM_USER

     

    Ευχαριστώ πολύ

Προβολή Τροφοδοσίας RSS με μορφή XML
Με χρήση του Community Server (Commercial Edition), από την Telligent Systems